#ifndef TINY_PID_H_
#define TINY_PID_H_

#include <stdint.h>

typedef struct
{
    float Sv;//设定值
    float Pv;//当前值

    //PID项目
    float Kp;
    float Ti;
    float Td;

    float Ek;  //本次偏差
    float Ek_1;//上次偏差
    float SEk; //历史偏差
    float T;

    float Iout;//积分控制器输出
    float Pout;//比例控制器输出
    float Dout;//微分控制器输出
    float OUT;
} PID;

void PID_Init(PID *pid, float target, float kp, float ti, float td, float t);
void PID_SetValue(PID *pid, float sv);
void PID_Set(PID *pid, float kp, float ti, float td);
float PID_Calc(PID *pid, float pv);

#endif

